Debugging and diagnosing system failures can be very time consuming and difficult. Furthermore, it is often necessary to use sophisticated equipment such as a logic analyzer which can be prohibitively expensive to acquire.